綜合能力測驗 - 破關紀錄


Posted by ai86109 on 2020-08-26

前言

又到了久違的複習週了,真是可喜可賀(?)

這次的複習週 Huli 一樣準備了小遊戲,就直接來玩玩看吧!

以下是我的解題心得


提示0

一打開會是個空白的網頁,下意識打開 devtool 檢查,會看到 body 的地方有一些 PHP 程式碼的註解。

$mode == "start" 的時候,會啟動以下程式碼,又發現 mode 是由 $_GET 所拿到的,所以代表我們可以利用 query string 的方式讓變數拿到值。

因此在網址列輸入 http://mentor-program.co/huli/game/index.php?mode=start


提示1

出現了

提示 #1 : 你必須想辦法列出所有步驟才能繼續

回頭看 PHP 程式碼,裡面的 sql 是 ORDER BY number $restriction

上面寫到如果在 query string 裡有找到 norestriction 這個變數,則 $restriction 這個值就會是空,所以就可以把所有值印出來,而非只有一筆。

這邊要提的是,isset 是看變數是否存在,就算沒有值也會回傳 true,而 empty 則是會看是否有值,否則回傳 false。

因此在網址列輸入 http://mentor-program.co/huli/game/index.php?mode=start&norestriction 即可


提示2

出現了

提示 #2 : 看一下 CSS 不會少塊肉

往下看把這個屬性勾掉

.hidden {
    display: none;
}

剩餘的提示就會顯示出來了


提示3

提示 #3 : 你有看到我的按鈕嗎?

往下看會看到 input,一樣把 display: none 勾掉,讓按鈕出現。

按下按鈕之後,到 console 會看到

你成功按下按鈕了!
少了些什麼...

提示4&5

提示 #4 : 看一下 JavaScript 搞不好會有什麼發現
提示 #5 : 別忘了遺漏的變數

下面找到 ./script.js 那行,右鍵 open in a new tab,來觀看原始碼。

可以看到當點下按鈕後,如果 myMissingNumberToSetToMakeTheRequest !== 'undefined' 就會執行以下程式碼取得資料。

回到 console 輸入 myMissingNumberToSetToMakeTheRequest = 1,再按下按鈕。

會拿到一串亂數
{hint: "54ceb91256e8190e474aa752a6e0650a2df5ba37", error: "數字錯誤"}

把這串 hint 拿去餵狗,會找到原來這一串亂數是由 SHA-1 這種雜湊函式產生的,到推回去原始輸入為 56

回到 console 輸入 myMissingNumberToSetToMakeTheRequest = 56,再按下按鈕。

就會得到 {s: "恭喜破關!flag: m3nT0rPr0GRAm666", error: false},就成功破關了!


#web game







Related Posts

Day 164

Day 164

NoSQL, Transaction, ACID and Lock

NoSQL, Transaction, ACID and Lock

部署 (1) —— 建立 AWS EC2 主機及 SSH 連線

部署 (1) —— 建立 AWS EC2 主機及 SSH 連線


Comments